/**
 * 
 */
package br.com.estrategos.modelo.pessoa;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;

import org.hibernate.annotations.ForeignKey;

import br.com.estrategos.modelo.localidade.EnderecoEntity;
import br.com.estrategos.modelo.seguranca.UsuarioEntity;

/**
 * @author x12259401
 * 
 */
@MappedSuperclass
public abstract class PessoaFisica {

	@Id
	@GeneratedValue
	@Column(name="idpessoafisica", unique = true, scale = 20)
	private Long idPessoaFisica;
	
	@Column(name = "nome", unique = false, scale = 45)
	private String nome;

	@Column(name = "rg", unique = true, scale = 8)
	private String rg;

	@Column(name = "cpf", unique = true, scale = 14)
	private String cpf;

	@Column(name = "dtnascimento", unique = false, scale = 10)
	private Date dtNascimento;

	@OneToOne (targetEntity = EnderecoEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="fk_endereco")
	@JoinColumn (name = "idendereco", nullable=false)
	private EnderecoEntity endereco;

	@Enumerated(EnumType.STRING)
	@Column(name = "tipopessoa", columnDefinition = "char(1)")
	private Pessoa pessoa;

	private Date dtcadastro;

	@OneToOne (targetEntity = UsuarioEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="fk_idusuario")
	@JoinColumn (name = "idusuario", nullable=false)
	private UsuarioEntity idusuario;

	public Long getIdPessoaFisica() {
		return idPessoaFisica;
	}

	public void setIdPessoaFisica(Long idPessoaFisica) {
		this.idPessoaFisica = idPessoaFisica;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getRg() {
		return rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public Date getDtNascimento() {
		return dtNascimento;
	}

	public void setDtNascimento(Date dtNascimento) {
		this.dtNascimento = dtNascimento;
	}

	public EnderecoEntity getEndereco() {
		return endereco;
	}

	public void setEndereco(EnderecoEntity endereco) {
		this.endereco = endereco;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public Date getDtcadastro() {
		return dtcadastro;
	}

	public void setDtcadastro(Date dtcadastro) {
		this.dtcadastro = dtcadastro;
	}

	public UsuarioEntity getIdusuario() {
		return idusuario;
	}

	public void setIdusuario(UsuarioEntity idusuario) {
		this.idusuario = idusuario;
	}


}
